home *** CD-ROM | disk | FTP | other *** search
/ 8bitfiles.net/archives / archives.tar / archives / c64-preservation-project / educational / intro_to_basic_part_1[cbm_1983].nbz / esg (.txt) < prev    next >
Encoding:
Commodore BASIC  |  2019-04-13  |  1.8 KB  |  74 lines

  1. 10 REM COPYRIGHT (C) ANDREW COLIN 1982
  2. 15 V=54272:FORI=0TO28:POKEV+I,0:NEXT
  3. 20 IFPEEK(58677)=6THENPRINT"[147][144]";:GOTO30
  4. 25 PRINT"[147]";
  5. 30 POKE54295,0:POKE54296,15
  6. 40 DIM T$(4)
  7. 50 FORJ=1TO4:READ T$(J):NEXT J
  8. 60 DATA TRIANGULAR,SAWTOOTH,PULSED,NOISE
  9. 70 F=512:P=200:W=1:A=0:D=9:S=0:T=250
  10. 80 PRINT"[147]EXPERIMENTAL SOUND GENERATOR"
  11. 90 PRINT"[197][197][197][197][197][197][197][197][197][197][197][197][197][197][197][197][197][197][197][197][197][197][197][197][197][197][197][197]"
  12. 100 PRINT:PRINT"PRESS THE SPACE BAR TO HEAR THE SOUND":PRINT:
  13. 110 PRINT"OR TYPE THE INITIAL LETTER TO CHANGE":PRINT
  14. 120 PRINT"A VALUE " :PRINT:PRINT
  15. 130 PRINT"FREQUENCY        (F) = ";F
  16. 140 PRINT"DURATION OR TIME (T) = ";T
  17. 150 PRINT"SUSTAIN LEVEL    (S) = ";S
  18. 160 PRINT"ATTACK VALUE     (A) = ";A
  19. 170 PRINT"DECAY VALUE      (D) = ";D
  20. 180 PRINT"WAVEFORM TYPE    (W) IS ";T$(W)
  21. 190 IF W=3 THEN  PRINT"PULSE WIDTH      (P) = ";P
  22. 200 GET A$:IFA$=""THEN 200
  23. 205 IFA$=" "THEN Z=0:GOTO610
  24. 207 Z=1
  25. 210 IF A$ <> "F" THEN 250
  26. 220 INPUT"NEW FREQUENCY (20-4000) ";F
  27. 230 IF F<20 OR F>4095  THEN GOSUB1000:GOTO200
  28. 240 GOTO600
  29. 250 IF A$<>"T"THEN 290
  30. 260 INPUT "NEW DURATION (1 TO 5000)";T
  31. 270 IF T<1 OR T>5000 THEN GOSUB1000:GOTO260
  32. 280 GOTO610
  33. 290 IFA$<>"S"THEN 330
  34. 300 INPUT"NEW SUSTAIN VALUE (0 TO 15)";S
  35. 310 IF S<0 OR S>15 THEN GOSUB1000:GOTO300
  36. 320 GOTO610
  37. 330 IFA$<>"A"THEN 370
  38. 340 INPUT"NEW ATTACK VALUE (0 TO 15) ";A
  39. 350 IF A<0 OR A>15 THEN GOSUB1000:GOTO340
  40. 360 GOTO610
  41. 370 IFA$<>"D"THEN 410
  42. 380 INPUT"NEW DECAY VALUE (0 TO 15) ";D
  43. 390 IF D<0 OR D>15 THEN GOSUB1000:GOTO380
  44. 400 GOTO610
  45. 410 IF A$<>"W"THEN 480
  46. 420 PRINT"NEW WAVEFORM (T,S,P OR N)";
  47. 425 GETA$:IFA$=""THEN 425
  48. 430 IFA$="T"THEN W=1:GOTO610
  49. 440 IFA$="S"THEN W=2:GOTO610
  50. 450 IFA$="P"THEN W=3:GOTO610
  51. 460 IFA$="N"THEN W=4:GOTO610
  52. 470 GOSUB1000:PRINT:GOTO420
  53. 480 IFA$<>"P"OR W <> 3 THEN 520
  54. 490 INPUT"NEW PULSE WIDTH (8 TO 999) ";P
  55. 500 IF P<0 OR P>999THEN GOSUB1000:GOTO490
  56. 510 GOTO610
  57. 520 IF A$<>" "THEN GOSUB1000:GOTO80
  58. 600 REM PLAY NOTE
  59. 610 Q=16*F:POKE54273,Q/256:POKE54272,(Q-32768)AND255
  60. 620 POKE 54275,P/8:POKE54277,16*A+D:POKE54278,16*S
  61. 630 POKE54276,1+2^(W+3)
  62. 640 FORN=1TOT:NEXTN
  63. 650 POKE54276,0
  64. 660 IF Z=1THEN 80
  65. 670 GOTO200
  66. 1000 REM ERROR WARNING
  67. 1010 POKE 54278,0:POKE 54277,8
  68. 1020 POKE 54276,0:POKE54276,17
  69. 1030 FORNN=100TO20STEP-1.5
  70. 1040 POKE54273,NN
  71. 1050 NEXTNN
  72. 1060 POKE 54276,0
  73. 1070 RETURN
  74.